Wang Haihua
🍈 🍉🍊 🍋 🍌
总体和从该总体中抽取的样本之间的关系是统计学中最重要的概念,是其他概念的基础。 下面这幅图描述了二者之间的关系:
大框中的圆圈代表总体中的元素。实心的黑色圆圈代表了随机选择的总体元素,它们共同构成了样本。对于样本中的每个元素,都有一个的度量,用小写$x$表示$(x1,…,xn)$;这些度量结果共同构成样本数据集。从这些数据中我们可以计算出各种统计数字(统计量)。我们可以计算出样本均值、样本比例等,并把它们作为近似总体均值μ(这是小写希腊字母μ,传统符号为这个参数)和总体的比例p。图中的其他符号代表我们将遇到的其他参数和统计数据。
比如我们关心某个城市人口的平均年龄,随机抽取了1000个市民,记录了他们的年龄,这就组成了样本,而城市所有人的年龄组成了总体;可以通过这1000人的平均年龄(样本均值)来估计全城人口的年龄平均值(总体均值)。
均值定义为 $$\bar{x}=\frac{\sum_{i=1}^n x_i}{n}$$ 右侧分子代表所有样本或总体数值的和,分母为样本或总体中元素个数 均值是对数据集中趋势的度量,此外中位数(Median)、众数(Mode)也是常用的描述集中趋势(Centrality)的度量方法
样本方差(Sample variance)定义为
$$s^2 = \frac{\sum_{i=1}^n (x_i-\bar{x})^2}{n-1}=\frac{\sum_{i=1}^n x_i^2-\frac{1}{n}(\sum_{i=1}^n x_i)^2}{n-1}$$
样本标准差(Sample standard deviation)定义为
$$s = \sqrt{\frac{\sum_{i=1}^n (x_i-\bar{x})^2}{n-1}}$$
注意上述两个公式的分母为样本个数减一
总体方差(Population variance)定义为
$$\sigma^2 = \frac{\sum_{i=1}^n (x_i-\mu)^2}{N}$$
总体标准差(Population standard deviation)定义为
$$\sigma = \sqrt{\frac{\sum_{i=1}^n (x_i-\mu)^2}{N}}$$
这里的$\mu$是总体均值,$N$为总体元素个数
方差与标准差是对数据离散(Variability)趋势的度量,类似的指标还包括极差(Range)
百分位数(Pecentile),指的是如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。
四分位(Quartile),即把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。
除了这三个四分位数外,最小值和最大值也可以用来描述整个数据集。这五个数字加在一起被称为数据集的五数摘要(Five-number summary): $$\{ x_{min},Q_1,Q_2,Q_3,x_{max}\}$$
五数摘要被用来构建箱线图(Box plot).箱线图中每一个数字都用一个垂直线段表示,利用Q1和Q3处的线段作为其两个垂边形成一个方框,并将两个水平线段从标记Q1和Q3的垂线段延伸到相邻的最值。这两个水平线段被称为“须”,这个图表有时也被称为“盒须图”(box and whisker plot).
小提琴图(violin plot)融合了箱线图与概率密度,“小提琴轮廓”是概率密度曲线。
(上面的箱线图和小提琴图数据取自python sklearn库中的load_iris数据集)
还有一种在数据集中定位特定观测点x的方法是以标准差为单位计算其到平均值的距离的方法——Z-分数(z-score) 样本数据的z-分数 $$z=\frac{x-\bar{x}}{s}$$ 分母为样本标准差
总体数据的z-分数 $$z=\frac{x-\mu}{\sigma}$$ 分母为总体标准差
z-分数表示个体观察x距离数据集中心(即其均值)有多少个标准差。如果z是负的,那么x低于平均值。如果z等于0,那么x等于平均值。如果z是正的,那么x高于平均值。
本文介绍了统计的基础概念及常用的描述性统计量和图表。当我们拿到一份数据集时,可以先从描述性统计入手,获得对数据整体的感知,然后再进行进一步的数学探索和分析。
参考资料
import seaborn as sn
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.family']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
import pandas as pd
3.4
from sklearn.datasets import load_iris
iris = load_iris()
df = pd.DataFrame(iris.data,columns=iris['feature_names'])
sn.boxplot(data=df)
plt.savefig('images/05pop03.png')
sn.violinplot(data=df)
plt.savefig('images/05pop06.png')
df.describe().apply(lambda x:round(x,2))
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | |
---|---|---|---|---|
count | 150.00 | 150.00 | 150.00 | 150.00 |
mean | 5.84 | 3.06 | 3.76 | 1.20 |
std | 0.83 | 0.44 | 1.77 | 0.76 |
min | 4.30 | 2.00 | 1.00 | 0.10 |
25% | 5.10 | 2.80 | 1.60 | 0.30 |
50% | 5.80 | 3.00 | 4.35 | 1.30 |
75% | 6.40 | 3.30 | 5.10 | 1.80 |
max | 7.90 | 4.40 | 6.90 | 2.50 |